#ifndef DOUBLE_LINKED_LIST_HH_
# define DOUBLE_LINKED_LIST_HH_

template <typename T>
struct LinkedList
{
  LinkedList<T>* next;
  LinkedList<T>* prev;
  T elt;

  ~LinkedList ()
  {}
};

template <typename T>
class DoubleLinkedList
{
public:
  DoubleLinkedList ();
  ~DoubleLinkedList ();

  void push_front (T elt);
  void push_back (LinkedList<T>* elt);
  void push_back (T elt);

  void erase (T elt);

  LinkedList<T>* begin;
  LinkedList<T>* end;
};

# include "double_linked_list.hxx"

#endif /// !DOUBLE_LINKED_LIST_HH_
